package ljl.alg.wangzheng_camp.round1.veryveryeasy;

public class _offer_67_atoi {
    
    /**
     * 做过很多遍了
     * 加个限制：不能用 long
     * */
    public int strToInt(String str) {
        str = str.trim();
        if (str.length() == 0) return 0;
        int sign = str.charAt(0) == '-' ? -1 : 1;
        int i = str.charAt(0) == '+' || sign < 0 ? 1 : 0;
        int res = 0;
        for (int j = i; j < str.length(); j++) {
            char c = str.charAt(j);
            if (!Character.isDigit(c)) break;
            // 我透这点小数学算不清？
            // res * 10 + c - '0 > integer.max
            // 卧槽过了
            // 路飞是这么写的：res > max || res == max && s.charAt(j) > '7'
            // 他这个更细，我感觉；不用除，应该是更快点
            if (res > (Integer.MAX_VALUE - (c - '0')) / 10) {
                return sign > 0 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
            }
            res = res * 10 + c - '0';
        }
        return res * sign;
    }
}
